{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import csv\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "perf_data = {}\n",
    "perf_data_path = \"../../simulator/traces/llama7b_bsz16/placements.csv\"\n",
    "with open(perf_data_path, \"r\", encoding=\"utf-8-sig\") as f_data:\n",
    "    reader_config = csv.DictReader(f_data)\n",
    "    data_rows = list(reader_config)\n",
    "for data_row in data_rows:\n",
    "    exec_plan = str(data_row[\"exec_plan\"])\n",
    "    perf_data.setdefault(exec_plan,{})\n",
    "    placement = str(data_row[\"placement\"])\n",
    "    perf_data[exec_plan].setdefault(placement,{})\n",
    "    cpu_threads = int(data_row[\"cpu_threads\"])\n",
    "    perf_data[exec_plan][placement][cpu_threads]=float(data_row[\"iter_time\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# resource limits\n",
    "placements = [\"8888\",\"4444\",\"4\",\"1\"]\n",
    "\n",
    "exec_res_perf = {}\n",
    "dafault_cpu_threads = 2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Test the reconfigurability of Morphling."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "import sys\n",
    "import os\n",
    "# Get the LLaMA model for evaluation.\n",
    "# Build the performsance model for LLaMA-2-7B.\n",
    "notebook_dir = os.path.dirname(os.path.abspath(\"__file__\"))\n",
    "sched_dir = os.path.abspath(\n",
    "    os.path.join(notebook_dir, \"../../sched\")\n",
    ")\n",
    "if sched_dir not in sys.path:\n",
    "    sys.path.append(sched_dir)\n",
    "from morphling_sched.performance_model import PerformanceModel\n",
    "from llama7_config import llama7\n",
    "llama_model = llama7()\n",
    "llama_model.model_info()\n",
    "perf_model = PerformanceModel(\"LLaMA-2-7B\",6738423808 / 1024 / 1024,\n",
    "                              llama_model.local_bsz,500,\n",
    "                              llama_model.sequence_length*llama_model.hidden_size,\n",
    "                              llama_model.num_hidden_layers,\n",
    "                              llama_model.max_dp_atom_bsz,\n",
    "                              llama_model.max_mp_atom_bsz,\n",
    "                              llama_model.avail_placement,\n",
    "                              llama_model.env_params,\n",
    "                              llama_model.perf_params)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Just transform the execution plan to the format of the csv.\n",
    "def transform_exec_plan(origin_plan):\n",
    "    if \"zero-offload\" in origin_plan:\n",
    "        exec_plan = \"zero-offload\"\n",
    "    elif \"zero-dp\" in origin_plan:\n",
    "        exec_plan = \"zero-dp\"\n",
    "    else:\n",
    "        exec_plan = \"dp\"\n",
    "    if \"gc\" in origin_plan:\n",
    "        exec_plan += \"+gc\"\n",
    "    elif \"ga\" in origin_plan:\n",
    "        exec_plan += \"+ga\"\n",
    "    return exec_plan"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Morphling chooses the execution plan: (PP=2,TP=4,DP=4), when the GPU placements are: 8888, and the CPU threads are: 2. The training performance is: 1.165.\n",
      "Morphling chooses the execution plan: (PP=4,TP=4,DP=1), when the GPU placements are: 4444, and the CPU threads are: 2. The training performance is: 1.803.\n",
      "Morphling chooses the execution plan: (PP=2,TP=2,DP=1), when the GPU placements are: 4, and the CPU threads are: 2. The training performance is: 5.107.\n",
      "Morphling chooses the execution plan: zero-offload+gc, when the GPU placements are: 1, and the CPU threads are: 2. The training performance is: 66.0.\n",
      "Morphling chooses the execution plan: zero-offload+gc, when the GPU placements are: 1, and the CPU threads are: 4. The training performance is: 46.0.\n"
     ]
    }
   ],
   "source": [
    "# The training performance of LLaMA-7B under Morphling.\n",
    "# Morphling: always chooses the best execution plan under different resource limites.\n",
    "execution_plan = \"Morphling\"\n",
    "res_perf = []\n",
    "for placement in placements:\n",
    "    num_gpus = sum(int(i) for i in placement)\n",
    "    # Provide the resource limits to the performance model.\n",
    "    # Performance model will return the best execution plan and throughput prediction.\n",
    "    perf_model.get_plan_with_fixed_res(num_gpus,dafault_cpu_threads,0,placement)\n",
    "    if perf_model.res_matrix_3D[placement][0]>perf_model.res_matrix[num_gpus][dafault_cpu_threads][0][0]:\n",
    "        exec_plan = ''.join(map(str,perf_model.res_matrix_3D[placement][1]))\n",
    "        res_perf.append(perf_data[exec_plan][placement][dafault_cpu_threads])\n",
    "        exec_plan = f'(PP={exec_plan[0]},TP={exec_plan[1]},DP={exec_plan[2]})'\n",
    "    else:\n",
    "        exec_plan = transform_exec_plan(perf_model.res_matrix[num_gpus][dafault_cpu_threads][0][1])\n",
    "        res_perf.append(perf_data[exec_plan][placement][dafault_cpu_threads])\n",
    "    print(f'Morphling chooses the execution plan: {exec_plan}, when the GPU placements are: {placement}, and the CPU threads are: {dafault_cpu_threads}. The training performance is: {res_perf[-1]}.')\n",
    "        \n",
    "# 2x more cpus\n",
    "res_perf.append(perf_data[exec_plan][placement][dafault_cpu_threads*2])\n",
    "print(f'Morphling chooses the execution plan: {exec_plan}, when the GPU placements are: {placement}, and the CPU threads are: {dafault_cpu_threads*2}. The training performance is: {res_perf[-1]}.')\n",
    "exec_res_perf[execution_plan]=res_perf"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Get training performance of other execution plans."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# The training performance of LLaMA-7B under TP+DP.\n",
    "# TP+DP: using TP inside nodes and DP across nodes.\n",
    "execution_plan = \"TP+DP\"\n",
    "res_perf = []\n",
    "for placement in placements:\n",
    "    num_nodes = len(placement)\n",
    "    num_gpus_per_node = int(placement[0])\n",
    "    num_gpus = sum(int(i) for i in placement)\n",
    "    exec_plan = \"1\"+str(num_gpus_per_node)+str(num_gpus//num_gpus_per_node)\n",
    "    res_perf.append(perf_data[exec_plan][placement][dafault_cpu_threads])\n",
    "# 2x more cpus\n",
    "res_perf.append(perf_data[exec_plan][placement][dafault_cpu_threads*2])\n",
    "exec_res_perf[execution_plan]=res_perf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "# The training performance of LLaMA-7B under TP+PP.\n",
    "# TP+PP: using TP inside nodes and PP across nodes.\n",
    "execution_plan = \"TP+PP\"\n",
    "res_perf = []\n",
    "for placement in placements:\n",
    "    num_nodes = len(placement)\n",
    "    num_gpus_per_node = int(placement[0])\n",
    "    num_gpus = sum(int(i) for i in placement)\n",
    "    exec_plan = str(num_gpus//num_gpus_per_node)+str(num_gpus_per_node)+\"1\"\n",
    "    res_perf.append(perf_data[exec_plan][placement][dafault_cpu_threads])\n",
    "# 2x more cpus\n",
    "res_perf.append(perf_data[exec_plan][placement][dafault_cpu_threads*2])\n",
    "exec_res_perf[execution_plan]=res_perf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "# The training performance of LLaMA-7B under Megatron 3D.\n",
    "# Megatron 3D: adopts a feasible TP+PP configuration such that \n",
    "# each partition fits in a GPU, then scales out using DP.\n",
    "# For LLaMA-2-7B (global batch size=16), the most suitable TP+PP \n",
    "# configuration is TP=2 and PP=2.\n",
    "execution_plan = \"Megatron 3D\"\n",
    "res_perf = []\n",
    "for placement in placements:\n",
    "    num_gpus = sum(int(i) for i in placement)\n",
    "    exec_plan = \"2\"+\"2\"+str(num_gpus//2//2)\n",
    "    if exec_plan not in perf_data:\n",
    "        res_perf.append(0)\n",
    "    else:\n",
    "        res_perf.append(perf_data[exec_plan][placement][dafault_cpu_threads])\n",
    "# 2x more cpus\n",
    "if exec_plan not in perf_data:\n",
    "    res_perf.append(0)\n",
    "else:\n",
    "    res_perf.append(perf_data[exec_plan][placement][dafault_cpu_threads*2])\n",
    "exec_res_perf[execution_plan]=res_perf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "# The training performance of LLaMA-7B under ZeRO-Offload+GC.\n",
    "execution_plan = \"ZeRO-Offload+GC\"\n",
    "exec_plan=execution_plan.lower()\n",
    "res_perf = []\n",
    "for placement in placements:\n",
    "    num_gpus = sum(int(i) for i in placement)\n",
    "    res_perf.append(perf_data[exec_plan][placement][dafault_cpu_threads])\n",
    "# 2x more cpus\n",
    "res_perf.append(perf_data[exec_plan][placement][dafault_cpu_threads*2])\n",
    "exec_res_perf[execution_plan]=res_perf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'Morphling': [1.165, 1.803, 5.107, 66.0, 46.0],\n",
       " 'TP+DP': [1.306, 2.372, 5.704, 0.0, 0.0],\n",
       " 'TP+PP': [1.36, 1.803, 5.704, 0.0, 0.0],\n",
       " 'Megatron 3D': [1.269, 2.084, 5.107, 0, 0],\n",
       " 'ZeRO-Offload+GC': [0.0, 15.0, 30.0, 66.0, 46.0]}"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "exec_res_perf"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Plot the Figure 7."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4QAAAFTCAYAAABh6sKFAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAADI4UlEQVR4nOzdd3xTVf/A8c/pXpRSWlr2kg0yBWWjyFBERIYCCriQB/dA5fc8Ai4efBDBrSBDUIaKgJMpIEMQRIZshLIppZS2UNomPb8/QkLTpiPtTdOE7/v1ygty77nnfhO+3OTknqG01gghhBBCCCGEuP74uDsAIYQQQgghhBDuIQ1CIYQQQgghhLhOSYNQCCGEEEIIIa5T0iAUQgghhBBCiOuUNAiFEEIIIYQQ4jolDUIhhBBCCCGEuE75uTuA0ioqKkrXqFHD3WHkYjab8fX1dXcYwstIXgmjSU4JV5C8EkaTnBKuUFrzatu2bQla6+ic26VBmIcaNWqwdetWd4eRS3JyMuHh4e4OQ3gZySthNMkp4QqSV8JoklPCFUprXiml4hxtL5VdRpVSsUqpIUqpqUqpDUqpy0oprZT6q4Djjl4tl98jqIRehkucOnXK3SEILyR5JYwmOSVcQfJKGE1ySriCp+VVab1DeB/wbjGO3w1czGNfVjHqdbuoqCh3hyC8kOSVMJrklHAFySthNMkp4Qqellel8g4hkAysBP4L9APGOHn8k1rr9nk8MgyPtgRduXLF3SHw22+/oZRCKcWJEyecOlYp5VT5Cxcu8OKLL1K3bl2Cg4OpVq0agwYNYu/evU7VA3D8+HGeffZZGjZsSGhoKEFBQdxwww0MGzaMdevW2ZWdNWuW7TUqpfD19SU2Npb77ruPAwcO2MqtWbMGpRRz5851eM65c+eilGLNmjVOx1uSSkNeCe8iOSVcQfJKGE1ySriCp+VVqbxDqLWeAcywPldKDXNfNKVLamqqW89vMpkYNWoUoaGhXLp0qcDyWmuWL19O9+7dc+1btmwZ3bp1y7ORaDKZuO2229i/fz+PP/44DRo0IC4ujo8//pgff/yRXbt2Ua1atULFvXz5cvr164fWmvvvv58nn3wSf39/Dh8+zNKlS5k9ezbLly/n9ttvtzvuP//5D3Xr1iU9PZ1t27bx+eefs3LlSnbt2kXFihULdW5P4O68Et5Hckq4guSVMJrklHAFT8urUtkgFHmrXr26W8///vvvc+bMGR555BGmTp1aYPnz58/z+uuv89577/HRRx8BEBcXx6hRo0hOTqZVq1aUL1/e4bHr1q1j+/btvPfeezz55JO27bfccgt33nkn3377Lc8++2yBMRw9epT+/ftTqVIlVq5cSZUqVez2v/XWWyxcuJDQ0NBcx3br1o327dsD8PDDD1OvXj2eeeYZZs2axSuvvFLguT2Fu/NKeB/JKeEKklfCaJJTwhU8La9Ka5fR4npcKfWDUmqVUupLpdTjSqky7g7KCHFxDicHKhGnT59m3LhxvPXWW0RERBTqmKioKNavX8/w4cPp3bs3AL1792b48OGsW7cuz8YgWGZoAnLdibM+DwkJKVQMb7/9NsnJycyYMSNXYxAs3VgHDhxI27ZtC6yra9euABw5cqRQ53bkn3/+4f7776dy5coEBgYSGxvLHXfcwa5du4pcZ3G5M6+Ed5KcEq4geSWMJjklXMHT8spb7xAOzPF8EPC6UmqQ1nqFOwIySlCQ+yZJfeGFF6hTpw4PPfQQr732mlPH+vhc++3BOi6vIG3atCEoKIh///vfRERE2LqMPv/889SuXZv77ruvUOdeunQptWvXLlSDryCHDh0Cij5YODMzk27dunHp0iVGjhxJlSpVOHv2LGvXrmX//v00adKk2DEWhTvzSngnySnhCpJXwmiSU8IVPC2vvK1BuBF4E/gNOAYEAO2B14DmwFKlVDut9Z/uC7F4Cntnzmhr165l3rx5rF+/3q5xV5Dz58/Tt29fwsLCWLp0KTVq1GDJkiWMGjWKqVOnsmjRojzvElasWJH58+fz+OOP243tu/nmm9m0aRNly5Yt8PzJycmcPHmSu+++2+G+jIxrcwwFBQURFhZmV+bixYskJCSQkZHBtm3bePrpp/Hx8aFfv36FfQvs7Nmzh8OHD7Nw4UL69+9v2+7u7qfuyivhvSSnhCtIXgmjSU4JV/C0vPKqBqHWelCOTZeBH5RSq4D1QAvgbaCro+OVUo8BjwFUqVKFffv2UalSJVuDoHr16sTFxREeHo6fnx+JiYlUrlyZs2fPkpWVRZUqVTh27JgtCZKSkqhWrRonTpzAx8eHmJgYTp48SWRkJCaTieTkZFudAQEBREVFcerUKaKiorhy5Qqpqam2/UFBQURERLB7924aNmxIamoqly9ftu0PCQkhLCyM+Ph4YmNjSUpK4sqVK7b9YWFhBAUFkZCQ4PRr+ueffxgxYgR9+/YlMjKSy5cvc/78ecAyaHbfvn15vqby5cszZMgQ7rnnHtuMSxUqVGDSpEls3rwZHx8f9u3bR4UKFRy+poCAABo2bMiIESOoXLkye/fuZebMmfTo0YP58+dTrly5fF9TfHw8YGnsHTp0yO7f6bHHHuO3336z/fv369ePCRMmEBMTw+nTpwHo1auXXY5ERUXx2WefERISQkJCAufOnQMgIyODffv22f6dzpw5Q4UKFUhISAAgPT2dffv22QYZz58/n1tuuQWTyWTYv1Nxci8lJYUzZ87km3vW11SSuefq/0/ymlz3mv7++29iYmK86jV547+Tp72mjIwMEhISvOo1eeO/kye9pvj4eEJCQrzqNXnjv5OnvaaLFy9Sp06dUvea8qS1LvUPYBiggb+KUUePq3WYgXIFlW/ZsqUujc6fP1/i55w0aZIOCwvTJ0+etG0bO3asBvTx48edqsuScoXzxx9/aH9/f71mzRq77StWrNCAnjJlitZaa5PJpE+fPm33uHz5stZa64sXL2pA33333bnq//PPP/WKFSts9T388MO2fTNnztSAfvfdd/WKFSv06tWr9a5du7TJZLKr49dff9WAnjNnjsPXMGfOHA3YvYbRo0drQAcEBOhOnTrp//73v06/j0ZzR14J7yY5JVxB8koYTXJKuEJpzStgq3bQ7vGqO4QF2Hj1Tx+gFrDNjbEUWWpqKpGRkSV2vosXLzJ+/HgeeughMjIyOHr0KGD5RQKwrUPoaLIWRyy5WDgffvghYWFhdOrUyW57165dKVOmDL/99htPP/00x48fp2bNmnZlZs6cybBhwwgPD6dSpUoOJ2xp3rx5gTG0atXKNsuoI9Y+4mlpaQ73X758GYDg4GDbtokTJ/LQQw+xdOlSVq5cydixY3n99ddZsmQJt912W4ExuUJJ55XwfpJTwhVKQ15lZWVx4cIFUlNTuXLlCllZWW6NRxSPyWTi7Nmz7g5DeBlX5ZWPj49tiFO5cuWcGsaVn+upQZh9QXqPfd3WBkZJuXDhAikpKbz33nu89957ufbfcsstVK9e3dZQNNKpU6cwm825tmutycrKwmQyARAbG8uKFfZzBTVq1Mj297vuuotPP/2UDRs20K5dO0NjrFGjBgD79u1zuH/v3r1A7umH69Wrx4svvsiLL77I8ePHad68OW+88YbbGoQlnVfC+0lOCVdwd16ZTCaOHz+On58fkZGRhISE4OPjU6iJ0kTplJaWZvejrRBGcEVeWb//Xr58maSkJJKTk6latSp+fsVv1nhsw6gIGmf7+wm3RVFMzq5rsnPnTo4ePUqvXr2K9CtChQoV+O6773Jtnz9/PgsWLGD69OlUrVrV6XoLo169eixfvpzvv/+eu+66y7b9u+++49KlS7Rs2RKw3KWzLgfhyOjRo/nyyy95+OGHHa5D6Mxdy5xiY2Np0aIF8+bN4+WXXyY6Otq2Lz4+nnnz5tGyZUtiYmIAy0Q2ISEhdv95q1atSnR0tO2ua3Glp6ezdOlSWrZsSa1atQp1jKetlyNKP8kp4QruzqvExEQCAwOpWLGiNAK9RGBgoLtDEF7IFXmllMLX15cyZcoQFhbG6dOnSUxMpEKFCsWu+3pqEI6++ucerfVJt0ZSDHFxcdSvX7/Acjt27OCzzz5j8+bNANSuXdvurllhhYSE0KdPn1zb//rrLwC6d+9e6O6iznrqqaeYPXs2AwYMYOTIkdSvX589e/bwySefEBsby4gRIwpVT61atVi4cCEDBgygQYMGDBo0iObNm+Pr68uxY8f4+uuvAahWrVqR4pw6dSpdu3blxhtv5OGHH6ZatWocO3aM6dOnc/HiRb755htb2dWrVzNy5Ej69etHvXr18PPz44cffmDfvn1MnDixSOfPae3atUycOBGlFF27duXRRx8tsGFY2LwSorAkp4QruDuvLl68SLVq1aQx6EXS09PlDqEwnKvzSilF+fLlOXbsmDQIs1NKvQCkA19prc9n214eeAuwzvH/qhvCM0xBi7HnbAiGhITw4IMP0rBhw5IIz1A33HADf/75J+PGjWPx4sWcPHmSiIgI+vXrxxtvvOHUf4CePXuye/duJk+ezPLly5kzZw5aaypXrky7du349NNPc41VLKz27duzadMm3njjDT777DMuXLhAuXLl6NChA//+97/txio2bdqUXr16sWzZMmbMmIGfnx9169ZlxowZDB8+vEjnz6lz584MGDCA7777jhUrVrBy5coCG4YF5ZUQzpKcEq7g7rwymUz5z9QnPI5RY7CEyK4k8iogIMA2fKq4VHG6y7mKUqoqsD3bpkAgDMsMoUnZtr+ttX776jFTgKexzCR6FDgHBAMNsDR8s4BXrOUL0qpVK71169bivAyXSExMdDig3lFDcNCgQQwaNIjw8PCSDlOUAvHx8cyaNYvvvvuOzMzMfO8Y5pVXQhSV5JRwBXfn1d69e2nQoIHbzi+MZzKZDBmDJUR2JZVXzl6TlFLbtNatcm4vrf8DfAFHq5Xn3J79p8L5gAJaA9WAplgakP8Aa4GPtNZ/uSLYkhQfH2/3YSgNQZGXChUqMHr0aIYNG2ZrGOZ1xzBnXglRXJJTwhUkr4TRMjMzpUEoDOdpeVUqI9VaH8XSuHPmmN+B310SUCkSGxtr+3ufPn1YvXo1AL6+vsTGxhIeHs6iRYtYtGiRu0IUpVRgYCDnz58nPj6e/fv389FHH/Hggw/y/vvv2+WVEEaQnBKuIHkljObv7+/uEIQX8rS8KnaDUCkVqLVONyIYUbCkpCQiIiIAOH78uG1ZBl9fX8xmMxcvXpTB7sIh63TFWmtb3mRfV9KaV0IYQXJKuILklTCa2Wz2qDs5wjN4Wl4VOlKllB/QFegCdARqYum+6aOUugTEY1nsfQ3wi9b6iOHRCq5cuWL7+8aNG/nqq6/46quvOHfuHGCZKfPBBx+kffv2MlBaAJZuC8uXL+fLL7/EbDYTFhZG9erVefDBB7nnnnsA+7wSwgiSU8IVJK+E0bKysop1fOfOnVm7di0zZ85k2LBhhT7u6NGj1KxZE8i9/FVR6xSlR3HzqqQV2CC8OsHLSGA4YJ3WMectqLCrj1pAP0ArpVYBn2itcy9iJ4os+xpMgYGBDB8+nMGDB7N06VJmzJjB8ePHefPNN7nhhht47LHH6Ny5szQMr1OZmZn88MMPzJgxg9OnTwNQp04dHn30Ubp27WqXF+5e20t4H8kp4QqSV57F2rABuOmmm9iyZUueZdPS0oiJiSElJQWAp59+milTprg8RlmHULiCp+VVng1CpVQZ4D/Ak1hm+TQDm68+tgCngEQgDYjEcrewIdAGaAfcDnRVSu0Antda/+q6l3H9cLQGU0BAAP369aN37962huGhQ4cYPXo0tWvXZuTIkXTu3Nk9AYsSp7VmyZIlfP7557aGYM2aNR02BK3cvbaX8D6SU8IVJK881x9//JHvjIiLFi2yNQZLUmlch7BatWrUq1ePsmXLujsUUUSlMa/yk98dwsNAFPA3MBPL+n5nCqjvZwBlGcTWBXgQGACsVEo9qbX+qPghX9/CwsLy3OeoYXj48GFeeOEF5s2bR506dUowUuEuv/32G2+88QZQcEPQKr+8EqIoJKeEK0heeab69euzb98+Zs+ezX//+1+HZWbNmmVXtqT4+vqW2LkK64svvnB3CKKYSmNe5Se/voRngQFa6yZa68mFaAzaaIvVWuthQG3gE6BM8UIVAEFBQQWWsTYMFy9ezCuvvMJ9991H5cqVSyA6URo0atSIvn378tZbb7FgwQK6detWYLfhwuSVEM6QnBKuIHnlmQYOHEhgYCBz5851OLbqxIkTrF69mnr16tGmTZsSjU0m4hOu4Gl5ld+3xBu11t8U9wRa69Na61FAoRaEF/lLSEgodNmAgADuvfdeXnjhBUJCQgo+QHiF8uXLM2bMmEI1BK2cySshCkNySriC5JVnioiIoHfv3pw8eZJVq1bl2j9nzhyysrIYOnRovvUcPXqUkSNHUrt2bYKCgoiIiKBDhw5Mnz7dNnt2TkoplFIcPXqUDRs20Lt3bypUqICPjw+zZs3CZDIxa9YslFJ07twZs9nM22+/TaNGjQgODqZChQrcf//9HDp0qMDXGR8fz8iRI6lSpQqBgYHUqlWLMWPGOD0ZUufOnVFK2e6aWmWPU2vNJ598QvPmzQkJCSEyMpI+ffrw999/51lvUlISzz77LNWrVycoKIjq1avz1FNPkZiYyLhx41BKySQ2BjGZTO4OwSl5flvUOac8Kiaj67teVapUyd0hCC8keSWMJjklXEHyynNZG3uzZ8/OtW/27Nn4+PjwwAMP5Hn86tWradKkCZ988gmnT5+mcePGREVFsX79eh599FF69eqVb8Nr4cKFdOrUibVr11K9enVq1KgBWH48t9Ja069fP1566SXS0tJo2LAhycnJzJ8/nxYtWvDHH3/kWf/x48dp3rw5M2bMoEKFCsTGxnLkyBEmTJhA//79C3p7nDZ06FBGjhxJSkoKderU4dKlSyxZsoR27do5bLzGx8fTpk0bpkyZwvHjx6lTpw4RERF8+OGHtG7dmgsXLhge4/Use155As9ZIEMAll9Hw8PD3R2G8DKSV8JoklPCFUpzXiW/8467QzBU+PPPG1pf9+7diYmJ4bvvviMlJYUyZSwjiX7//Xf2799P165dqVKlisNjz507x4ABA0hNTWXAgAF89tlntglXfv31V+69915++eUXxowZw+TJkx3WMWbMGF566SXGjh1r+7KelpZmdydn06ZNBAYG8vPPP9OjRw8Azp8/z+DBg1m2bBn33Xcff//9t8Ouy6+//jp33nkn06dPp3z58gB899139OvXjx9++IEVK1Zw++23F/Hds7dx40b279/Phg0baNu2LQAnT56kR48e7N69m7Fjx/Lll1/aHfOvf/2LAwcOUKdOHZYuXWqbnOnw4cP06dOHjz/+2JDYhIXJZPKocYRONQiVUm2Al4DvtdYz8yn3ENALeFNrva14IV7fsi5e5NL8+bbn4VeukCJjKISBlJ8fQcHBZJUvj4/MaCYMkpGR4e4QhBeSvPJcfn5+DB48mMmTJ/PNN98wfPhw4Nodw/y6i3788cecP3+eypUrM2fOHLu7L126dGHy5MkMHz6cjz76iDFjxhAVFZWrjh49evDmm2/abQsODiYtLc32PDMzk7feesvWGATLMIx58+ZRvXp1/vnnHxYuXMiDDz6Yq/7IyEjmzJljN/HRPffcQ+/evVm8eDE//vijYQ3CzMxM3nvvPVtjEKBy5cq88cYb9OnTh59++smu/OHDh1m0aBEA8+fPt5upt3bt2nz99dc0atTIkNiEhdetQ5jDQ8DdwP8KKLcXmI5laQppEBaH1ujUVNtTf63RHtYvWZRuGgi9cIHLCxcS+sADKPnBQRhA1osTriB55dmGDh3K5MmTmT17NsOHDyc9PZ0FCxZQpkwZ+vbtm+dx1gbOv/71L4dd8YYMGcLLL7/M2bNnWb16NQMGDMhVJq+xcdnXi/P39+exxx7LVaZcuXI88MADfPTRR/z8888OG4T333+/w1lw27Rpw+LFizl8+HCer89Z5cqVc9gN1TohT1JSEufPn7fdqVy2bBlaa5o1a0aLFi1yHVe/fn3at2/PunXrDIvxeudp6xA6u2J5ByBZa70pv0JX9ycDnYsYl8hDXoOmhSgOs9lMVnIypqNH3R2K8BJxcXHuDkF4Ickrz3bjjTfSrFkz1q1bx9GjR1myZAkXLlygX79++U5+t3//fgAaN27scL+fn5/trldeS1bktf5henq67e9Vq1bNs0tyw4YN7WLJ6YYbbnC4vUKFCgCkZvtxv7hq166d77lynu/AgQMANG3aNM86mzVrZkxwArDPK0/gbIOwCnCkkGWPALLWgcFUIWeNFMIZ1rzKOn/ezZEIb1Fax3kJzyZ55fmGDRuG1po5c+bYuosWNLOldcH6mJiYPMvExsbalc0pNDTU4fbs47yyN6hysp7b2fqts30bObdiQefKeT5r49A6btOR/PYJ53nS+EFwvkGogMK+Qh/As6bY8QCetaqJ8BSSV8Jofn4yZ5kwnuSV5xs0aBD+/v58+umnLFu2jJo1a9KhQ4d8j7E2Vs6ePZtnmTNnztiVLazs68XFx8fnWc56bk9sOFm7subVmC1on3Cep61D6OyVNQ6or5SK1Fon5lVIKRUJNACM6zAtAMsg1cKuLSdEYUleCaMlJibm+2u7EEVRmvPK6Fk5vVV0dDQ9e/Zk6dKlADz44IMFfnmuV68emzdvZvfu3fTu3TvXfpPJZOsqmn3ClMLIPsvoiRMn7GZAzW7Pnj22WDxN3bp1Adi5c2eeZXbs2FFS4VwXTCYT/v7+7g6j0JxtEC4HGmKZVObhfMq9jeVO4vIixiWuUuHhhI0YYXuemprqcNCyEM7I2LaNjK1bbc89rWuDKP0qV5YRA8J4klfe4YknnuDSpUsADidoyemOO+5g8+bNfPzxx7zwwgu5Jpb56quvOHv2LEFBQdx6661OxZK9royMDKZNm8Zzzz1nV+bixYvMmTMHwG4GUk/RvXt3lFJs376dv/76K9d4wQMHDrB+/Xr3BOelvH0dwneBR4FhSqkKwARgs9barJTyBW7GsixFL+AS4F2L8riB8vFBZWsAxp85Q/jVfvJCFJXKcaEyZ2XhJ41CYaCzZ896ZNcqUbpJXnmH22+/3aklGEaOHMl7773HiRMnePDBB/n0009t6xCuXbvW1oAbOXKkwyUn8pOZmWn7u7+/P+PGjaNx48Z069YNsNyVfuCBB0hJSaFmzZoMHDjQqfpLg9q1a9O3b1++/fZb7rvvPpYsWWK703nkyBH69euHj4+PTFxooMzMTI/6sd2pBqHW+rhSajAwH7jj6kMrpS4BIVjGDSrgCjBYa33M4Hive562rokQ4vok1yrhCpJX16fo6GgWLlzI3XffzYIFC1i6dCmNGjUiKSmJQ4cOAZa7YG+99VaxznPLLbcQGRlJ9+7dqV27NhEREfz9999cuXKFsLAwvvrqK4eL0nuCjz76iF27drF//34aNmxIo0aNUErx999/U716dVuj25MaMcI4Tg8a0lovBVoD3wMZV+sog6WLaAbwHdD6ajlhsCpVqrg7BOGFfGX8oDCYXKuEK0heXb9uvfVWdu7cyYgRI4iNjWXnzp3Ex8fTrl07PvvsM3788cciNdayj/NSSvHNN9/w3//+l4CAAP7++29CQ0MZOHAg27Zt4+abbzbyJZWoChUq8Pvvv/PMM89QuXJl9u/fT2JiIo899hhbtmyxdXGUmXyN4UnjBwFUcabBVUoFAnWAcCzrDh7UWnvWwht5aNWqld6abYxVabFv3z6nB0wLkVP6pk2kb9xoe24ymfDz8yPw5psJbNfOjZEJbyHXKuEK7s6rvXv35rmenfBMaWlpLFiwgOHDh9OpUyfWrFnj7pDcolevXvz4449MnTqVp556yt3heLy0tDSCg4Ndfh5nr0lKqW1a61Y5txdr/uarjb/dxalDOCciIsLdIQgvJDOMCqPJtUq4guSVMJosZQLHjx9nxYoVAAUuASIKx9PyqljfApVSFZVSrZRSHY0KSAghhBBCCGGcixcv8tprr3H69Gm77bt37+auu+4iIyODtm3b0rx5czdFKNypSA1CpdRDSql9wAlgM7A6x/6JSqnVSqlKBsQosklKSnJ3CMILyUQNwmhyrRKuIHkljJZ9HUJvlpmZydixY6lUqRIVK1akdevW1K5dmyZNmrBjxw4qV67MzJkz3R2m1/C0vHK6QaiU+hyYBtQFTEAmlplFs9sFdAbuKWZ8Iodq1aq5OwThhWRWMWE0uVYJV5C8EkbztPXiiio8PJw333yTjh07opRix44dnD17lsaNG/Pyyy+zfft22wL2ovg8La+cahAqpe4HhgNngN5Ylpr4w0HR7wEN3FncAIW9EydOuDsE4YXMcodQGEyuVcIVJK+E0TIzMxk2bBhaa6+eUCYgIIAxY8awdu1aTp06RXp6OqmpqezatYsJEyYQHR3t7hC9Svb1LT2BsyMeH8PS0LtPa/0bWKbozUlrfVEpdQSoXewIhR2Z/EMI4QnkWiVcQfJKCCGM5+yVtRlwytoYLEACIGMIDRYTE+PuEIQXknUIhdHkWiVcQfJKGM3T1osTnsHT8srZb4FBwLlClg3EcjdRGOjkyZPuDkF4IbPZ7O4QhJeRa5VwBckrYbSMjAx3hyC8kKfllbMNwtNArYIKKaWCgfpAXFGCEnmLjIx0dwjCC0k3LGE0uVYJV5C8EkbztPXihGfwtLxyNto1wFCl1HCtdX5z0z6F5Q7hiqIGJnK7lJTOmpn/EBhY+F9Iy1cKo/2AOnbbfvp4J5np1+4ItehenaoNrn3Injxwga0/HbU99/X3odeopk7HunLWHrttXR6oT3j5YNvzv387yaFt8U7FWhBHsW749hAJx1Nsz2s1i6ZJ5ypOxVoYRryvOWMtjKK8rytWp5OeYBni6+ujqRScRL2IRKfOK0R+PG3KbeEZJK+E0bSWzmzCeJ6WV842CN8BhgDvKctsMnOz77x6Z/BJ4A0gDXjPiCCFhSnTzLkjl4HLhT7GbMo9e+TJA0lkpF37UK1/c6zd/svJGZzYd8H23M/f+btHpkyzXR0ApnT7WC7Gp9mVKUysBXEU67ljKZzcf+08kZVCnY61MIx4X3PGWhhFeV9Pn8kiIzP8WuyXyuLvCw2dOrMQeUtOTqZSJRlGLowleSWMJkMmhCt4Wl459U1fa/03MAoIxrIW4QWgOYBSag+QCEy4WvwxrfVRwyIVQrjUmctl3B2C8CLVq1d3dwjCC0leCaMFBga6OwThhTwtr5y+9aO1ngbcDmzF0jAMwbIwfX0s3UT/Arpprb80LkwhhCtUCknmtkqH6Byznwbl4gs+QIhCiouTIeTCeJJXwmjp6enuDkF4IU/LqyKNeNRa/wq0UUpVBpoCEUAqsFtr/Y9x4YnsAoL9qN6iDOFlyxb6mLJRucfBNepQCVPmtW6EETH2XSgjKoTQpMu1MXY+vrnXmixMrNnrAAgMtU+32NplaWK6VqYwsRbEUay1mkXbdROtdEOE07EWhhHva85YC6Mo72v9en6kHz8FQJmAdEJ80vD19XXqvELkJyAgwN0hCC8keSWMJpOqCVfwtLxSnjbosaS0atVKb9261d1h5JKcnEx4eHjBBYXIR/qmTaRv3Gh7rrVGKUXgzTcT2K6dGyMT3kKuVcIV3J1Xe/fupUGDBm47vzCe2WyWH0SF4Uoqr5y9JimltmmtW+XcbuicqEqphlgWo9+htS7seoWisC4lYF7yPEREFO34cjWg/bOO953YBtu/KGpkULMjNL7X8b7di+DI2qLX3fxBqNLS8b71U+DCkaLX3eXfEBbteN8Pz4Eu4qBg/xDoMcHxvosnYN3/ilYvQHR9uHmk431xG2HnggKr8Dt7FnXlLAAaPzJULXRg3aLHJEQOp06dkgahMJzklTBaRkYGwcHOzSouREE8La+cahAqpdoDDwI/a62/y7Y9EvgW6Hh1k0kp9YLW+n3DIhWQnky5w4uLfnyV1nk3CC8cgW2zil63X3DeDcITfxSv7urt824Q7v8Jjm8uet1tn8q7QfjnF5CVWbR6g8rm3SC8nFi896P2rXk3CM/tL1TdvlcfVoFs4bLvQODmosclRDZRUVHuDkF4Ickrz2CZiN55R44coUaNGgwbNozZs2fnqrNs2bLUr1+f3r1788QTT1CmTPEnQ8trvbhx48Yxfvz4XGXLli1LVFQUTZs2pV27dgwaNCjfvOzcuTNr19r/KO7r60tERASNGjViwIABPProo9Id2st4+zqEw4DhwJwc2/8HdAI0cBHLmMIpSqk/tdYbihmjEKIE+GXuRzqQC6NcuXLF3SEILyR55Rna5TH0YMMGy1fCxo0bU9bBfAhBQUF2zytUqECdOpZ1dE0mE0eOHOH333/n999/5/PPP2ft2rVUrly5WLEWNHQqPDycJk2a2MpevHiREydOsH//fhYuXMiLL77Iiy++yNixY/H398+znqpVq1KtWjXAMuHI4cOHWbduHevWrWP27NmsXLlS7n57EU8bkudsg/AW4JLW+jfrBqVUGHA/lkll2mit9yqlngMmAU8A0iAUwgMoMqVBKAyTmprq7hCEF5K88gzr1693uN165/D999+nc+fOBdbTs2dPZs2aZbdt8eLFPPDAAxw+fJiRI0eydOnSAuuZNWsWw4cPZ+zYsYwbN85uX0HrxTVv3pw1a9bYbdNas2PHDj744ANmzJjBm2++yY4dO1iyZEmek4k89NBDdufWWvP555/z+OOP88cff/Dvf/+b996T5bu9haetQ+hsgzAGOJ5jWwcgCJittd57ddtU4P+AtsULT9jxD8Fcuyu+PkUcpBpVJ+99ZWKhTvei1QsQXS//fcWpu0xs3vuqtoagiKLX7R+S97463SDLlPf+/ATkU29gmeK9HxVvzHtf2aqFqtucdAHfc1uKHoMQBZD14oQrSF6JPn368OqrrzJ69Gh+/PFHLly4QLly5YpcX1HWi1NK0axZM6ZPn063bt247777+OGHH3jnnXd48cUXC13HI488wvbt2/noo4/48ssvmTp1apG724rSxdPWIXS2QRgO5FxWoh2WrqIrrBu01mal1BGgcfHCE3bKxHLwpjepX7++8XXXaG95uELLYZaHK3R7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JkzgpptuomzZsgQHB1O/fn1efvllEhMT8zxu3759DBgwgOjoaEJCQmjcuDHvvPMOly9fpnPnziilbHcprTIyMvj2228ZPnw4jRs3ply5cgQFBVG7dm0ee+wxDh06lOs8nTt3pksXy+dpXFwcSim7x9GjRwFYs2YNSilq1KgBWO6etm3bloiICLtyYOmCOnLkSGrXrk1QUBARERF06NCB6dOn53mtzX6+bdu2cffddxMVFUVwcDDNmzdnxowZBb7XzmrQoAFguTtW1Lv57du3Z+zYsQBMnz6d06dPGxZfSfK0dQidvUOonHzIHUiDyZTbwihNb6tKzxFN6DmiCW3vq0bz26u5OyThRZSHrcEkPIN8Bnoua2PPUbfR2bNn4+PjwwMPPJBvHYcOHaJZs2aMGTOGv/76i+joaGrVqsU///zDxIkTadmypV1DymrDhg20atWKr7/+mkuXLtGwYUPS0tJ44YUXePDBvJfWPnDgAP369eOLL74gMTGRWrVqUatWLc6cOcO0adNo0aIFv//+u90xTZo0oXHjxoD9eDnrIygoKNd5nnzySYYNG0ZcXBx169YlOjratm/16tU0adKETz75hNOnT9O4cWOioqJYv349jz76KL169cq38fXzzz/Ttm1b1q1bR40aNQgNDeWvv/7i4YcfZtKkSfm+385av349YLmTX758+SLXM3LkSPz8/MjIyGDZsmVGhVeiPK6XjNa60A+gej6PhkBv4CcgHXgMqO5M/aXp0bJlS10anTt3zt0hCC8keSWMkDJjhn7gs676gWm36SGf3aYfmHabXjflRW06f97doQkv4e5r1Z49ewpV7sKZS049kuIv5arjYsJluzJpKRl2+zMzTLnqMZvMTr+m7McbrVOnThrQ7777rs7MzNQxMTE6JCREJycn28ps2rRJA7pr165aa62HDh2qAf3000/b1ZWWlqYbNGigAT1o0CB95swZ2774+Hjdu3dvDeh27drZHXfp0iVdtWpVDei77rpLJyYm2vatWLFClylTRvv7+2tAz5w50+7YM2fO6Dlz5tgdo7XWqampety4cRrQ9erV01lZWXb7f/31Vw3o6tWr5/neWMv4+vrq4OBg/fXXX9v2ZWZm6szMTB0fH6/Lly+vAT1gwACdlJRkK7N69Wpdrlw5Dehnn302V/1YloLT/v7++rXXXtMZGZb8MZvN+vnnn9eADg4OtquzKDIzM3VcXJyeOnWqDgkJ0f7+/nrx4sW5ys2cObPA9yS75s2ba0A//vjjxYrPXazvt6sV9ppkBWzVDto9Ti2QobUuqK/GHmCpUuo/wFTgFkD6dxgoISGBqKgod4chvIzklTDKX/5n0NmGliT7eFa3GVG6ecq16suxvxdcKJuQsgEMn9jebtsvn+7m3LFrs27edGcNWt9Vy/Y88dQlvp6w1e6YYf9tR2iEc2OXssc66pNbnTrWGX5+fgwePJjJkyfzzTff2JYgsN4xLKi76MyZM9m7dy/t27dnzpw5+GTrhRAdHc1XX31F/fr12bBhAxs3bqRt27YAzJ8/n+PHjxMbG8u8efMIDQ21Hde1a1cmTJjAE0884fCcMTExDBkyJNf20NBQxo4dy4oVK9iwYQNbtmwp8thHs9nMa6+9Rr9+/WzbrOvXffzxx5w/f57KlSszZ84cAgICbGW6dOnC5MmTGT58OB999BFjxoxx+H/j9ttv5z//+Y/tuY+PD2+99RZz587l7Nmz/Prrr/Tp08fpuB955BE+//xzu209evRg7Nix3HzzzU7Xl1O1atXYvn07Z8+eLXZd7mAymTxq6QlX9el5C7gMjHNR/detSpUquTsE4SWyzFmYTVlcSc2kTGB5Ll3M/cU99UI6qReuOPHIXcfl5Ay7MumXM+32m81Zueoxm52fnStnrJkZ9uMqMjPMTsdamEfOWNMvZ9rtT0vJcDrWwjDifc0Za2Ee+b2vl9J9Ccko6/RrEaKw5DPQs+XsNpqens6CBQsoU6YMffv2zffYb775BrA0RHwcdEkPDQ3l9ttvByzj86x++eUXAO677z67xmD2mBx147TSWrN8+XKeeeYZevXqRceOHWnfvj3t27fn4MGDAGzfvj3f2AuSV2P4p59+AuBf//qXXWPQasiQIcTExJCens7q1asd1vHYY4/l2hYQEECzZs0AOHz4cJFirlOnDu3ateOmm26iQoUKgKXL6JdffmnI+Dlr93B3LEViBEf/XqWZU3cIC0trbVZKHQbaF1hYOCUhIYHw8HB3hyG8wKov9nJgs/0vbzl/Hf5y3O+Y0gvfWPEP8uWxKZ3sti2btptTB5Nsz5t1rUq7fnVsz5PPpfHVuM12xwwefzMRMbkXts1Pzlhvf7ghdW+6toj1kb/OsWLGHqdiLYycsf7x41F2rLq2BlPluhH0ea6FU7EWhhHva85YCyP/97UKA33HMKP1S07VKURhyWegZ7vxxhtp1qwZ69at4+jRo2zZsoULFy4wfPhwh4uZZ7dz504AJk+ezLRp0xyWsU46dOLECdu2AwcOANC0aVOHx/j7+1O3bl1b/dmlpKTQp0+fPBtbVufPn893f36ioqLsxgxmt3//fgDbmMSc/Pz8qF+/PmfPnmXfvn0Oy9xwww0Ot1sbcUVd7++ll17ipZeuXes3b97ME088wQcffMDRo0f5/vvvi1SvlbUh6Kn/300mk0eNI3RJg/CqmoBz3+hEgTIyct9tEKJI0p2bEloIIdxNPgM937Bhw3jmmWeYM2eObUKWYcOGFXhcUlISgMOGW07Z16+zNnjKlCnjsGxWVlae+55//nlWr15NTEwMEydOpGPHjlSsWNF2R/HBBx9kzpw5ZGZmOjy+MBzdtbSyNopiYmLyLBMbG2tXtrD1W++yaoPWjG3Tpg2//PILNWvW5IcffmDDhg20a9euyPVZG/f5vfbSzNPWITS8QaiU8gXeAMoDfxld//VO1mASRilzcTPQyPa8UsQZ9wUjhBCF4CmfgYPHOzeGSjkYwNNjRGOyTNe+rAeF2o9HiqwUmus8wWWcH7PkbKzFNWjQIF588UU+/fRTzpw5Q82aNenQoUOBx4WFhZGUlMSmTZucGqNWUNfDwMBAh/tMJhPz5s0DLOMXe/bsmatMce4MFkaZMmVISkrKdxzdmTNnbGXdrXz58rRt25Zly5axbdu2IjcIExMT2b17N4Ah4xHdwdPWIXSqQaiUym/REgVUAJoBsVhmN5pa5MiEQ3FxcdSvX9/dYQgv0LjqIQ4fiyDJXBmw/AcWQojSzFM+A53t8u5IePngfPf7+fsach4j6nBGdHQ0PXv2ZOnSpYDlLlvORc4dady4MevXr2fXrl1ONRLq1q3Ljh078ryzePHiRVu30uzOnTtnu7vYvn3uEVBms5mtW7fm2g4U6vUURr169di8eTO7d++md+/eufabTCZbV9HS8v/CZLIsQV6ctWg//vhjzGYzgYGBdO/e3ajQSlR6ejrBwfn/Hy5NnL1DOAxLQ6+gTE8DXtVa515sRhSLp/alFqVPWFAag6KeJMlcCZMOwL9uB2CQXZl7X2yBdqLXg6NfubsMqU9mtvFywWXsB1qXKR/EgDE32ccW6fwvazljLVPefpKAao3K252nMLEWRs5Ym3WtSr0218bY+QfmHkNQUKyFYcT7mjPWwsjvfb28dAlD1Ryn6hPCGfIZ6B2eeOIJLl2yDFvIbx3A7Pr378/69ev54IMPGDp0aKEn7ejRowdff/01CxYs4I033sg1VnHhwoUO1/HLXu7MmTO57sDNnTuX+Ph4h+e0NgTS0tIKFWNe7rjjDjZv3szHH3/MCy+8kOs1f/XVV5w9e5agoCBuvdV1M8QW1unTp9m4cSMAzZs3L1Idv/32G6+//jpgmRDHU7uMetL4QXC+QTg+n30auAQcAn7VWicXOSqRJ+tUxEIYQSlNOb+TlichzXLtj6pS/C4oBf367OfvS3S14p+noFiDQv1zdbnKyYhfysPKBRFWLv8GXml5XwsTa0Gyv6+poZl0++thu18M02Jz//IuRFHJZ6B3uP32220zghbWo48+yieffMLOnTu56667+OCDD6hT59pEWmazmU2bNjFr1izGjx9P5cqW3i/33Xcf48eP59ixYwwePJiZM2cSEREBWBZ9Hz16NP7+/rnGAZYtW5Ybb7yRnTt38txzz/Hll1/afpBYsmQJo0aNIigoyGFjslYty/Ig8fHx/P333zRq1ChXmcIYOXIk7733HidOnODBBx/k008/pWxZy0zOa9eu5bnnnrOVK4nlWGbNmkVaWhr33nuvbVIaqw0bNjBixAjS0tJo2bIlHTt2dKruAwcOMG3aNKZOnUpmZiatW7dm4sSJRoZfooy6S1xSnF2HML8GoSgBiYmJuf4TCiFEaRGeHonKtqKRziralOZCOCKfgdev4OBgfvrpJ3r16sXy5cupW7cutWrVokKFCly6dIlDhw7Z7sj9+9//th0XEhLCV199Rbdu3Vi8eDHLli2jUaNGXLhwgcOHD3P33Xdz4cIF1q1bl+uuzsSJE+nVqxc//PADlStXpm7dupw7d47jx4/TtWtXYmNjmTt3bq5Yo6Ki6N69O8uWLaNly5Y0btzYNpZx/vz5tolgChIdHc3ChQu5++67WbBgAUuXLqVRo0YkJSVx6NAhALp3785bb71VpPfUWUePHmX8+PH861//olq1ara7d0ePHuXcuXOApWvv4sWLHS4NApa7rdm74KakpHDy5EnbeExfX18ef/xxJk2a5FFdLnOSdQiFS1l/8RJCCCGuN/IZeH2rUaMGW7du5cMPP6Rz584kJSWxbds2zp8/T5MmTXj++edZv359rsmH2rVrx9atW+nfvz/BwcHs3r2bwMBAJk6cyMKFC22zkubsktyjRw9WrFhBly5d0Fqzb98+IiIimDBhAj/99FO+3QLnzp3LiBEjiI2NZefOnaxdu5a1a9c6vKOYn1tvvZWdO3fa1RUfH0+7du347LPP+PHHH/NdR9FIgwYN4rXXXuO2225DKcXff//Njh078Pf354477uDzzz/nzz//pEqVKnnWkZ6ezoYNG9iwYQO///47x44dIyIigrvvvpv//ve/xMXF8fHHH+c7+6on8LR1CFVxpptVSgUBNwBlgBTgsNa6eB2mS4lWrVrpvAYLu9OhQ4fyXFNGCKcsegx2Lrj2vNE90H+W28IRni915kxmba5qd4ewQtXN9B05At/ISDdGJryFuz8D9+7dS4MGDdx2fmG8S5cuUblyZS5evMiOHTu48cYb3R2S8AJXrlwpkYa6s9ckpdQ2rXWrnNuL1BlfKdUVeBnoCGT/ecSslFoHTNRaryhK3SJ/nrauiRDi+rKx+nfobEMnBvrLJCDCOPIZKIz23XffcfHiRcqXL0/Dhg3dHY4QbuF0g1Ap9RbwEvYzjV4CQq/WdyvQRSn1P631y4ZEKWzyuw0vhBDutrviOrsG4ZBk9898J7yHfAaKoti4cSMHDhygf//+dl0Rly5dylNPPQXAiBEjZNIiYRhPGj8ITo4hVEoNxHJnEGAu0BoI01qXwdIgbH11uwZevFpeGOjYsWPuDkEIIYRwC/kMFEVx6tQphg8fTtmyZalVqxZt2rQhJibGNqFMx44d+c9//uPuMIUXycjIcHcITnF2UpmnsTT2ntBaP6i13qq1vgygtU67+vxB4AksdxCfNjZcYZ0qWQghhLjeyGegKIrWrVvz/PPP06RJE1JSUvjzzz/JyMigXbt2TJ06lRUrVpTYxCzi+uBpd5udjfZG4IzW+uP8CmmtP1FK/edqeSGEEEIIIdyiWrVqTJo0yeG+zMxMj+veJ4TRnL1DmA6cKGTZE1fLCwMlJSW5OwQhhBDCLeQzUBjNZDK5OwThhTwtr5y9Q7gNaKWU8tdaZ+ZVSCkVANQBthQnOJFbtWrV3B2CuJ4kn4JiLE1D2TzWDDObIPVs0ev1DYCwaMf7Mi5D2oWi1x0QCsERjvelJUHGpaLXHVwOAkIc70s9B+ZijDkIiwHfPC7pF08WvV6lILyS432mDLh07lpRUxLID+3CheQzUBjN09aLE57B0/LK2Qbhm8BKYBL5jw98G8vahG8VMS6RhxMnTlC3bl13hyGuFx/dAleSinasjx+8et7xvqQ4eL9FkcOiaht4eLnjfft+hEWPFL3um/8FPSY43rd2Ivz+UdHrvvdzaNLP8b4Fg+H45qLX/eSfUL62431Tb4SsIv5aGRQBL8c53nduL3za0fY0FKBGVewmoS7ODwpC5CCfgcJomZmZ+S4wL0RReFpeOdsgPIJlyYkJSqlOwIfAHiAeqAA0BEYB9YHRwFGlVK6f87TWMk1YEfn4ONvLV4g8xDSCG7oCcOnyZUJjGrs5IOGNlE52dwjCi8hnoBBCGK8oDUKrJsAn+ZSddPWRky7CecVVMTEx7g5BeIt2T1seQFZKCpQp4+aAhDdSWanuDkF4EfkMFEaTCWWEK3haXjn7U5sy4CE/7xXDyZPFGAskRB4kr4QQnkCuVcJonrZenPAMnpZXTt2p01pLY87NIiMj3R2C8EJ55tXwnyDLbPwJy1aBEb8V/fiA0Lz31elavLpDo/Le1/ZJaHp/0euOqJr3vj4fF2/CmrJV8t736K9Fr9cnnzEQ5evYvdeXly4BFhT9XEIUQD4DhdE8bb044Rk8La88K1rhcdPYCs+QZ17FNHLNCf0CoaKLlikNLmd5uEJ4pbxn3CyuvCaEMYKr3uuAELu6swK2ueY8Qlwln4HCaFomvhIu4Gl5JQ1CD5OcnEylSi76QiquW5JXwihdDwy3e34l7LCbIhHeSK5Vwmhmswt6wYjrnqfllTQIPUz16tXdHYLwQpJXwii1Epuisg0VNweddmM0wtvItUoYLTAw0N0hCC/kaXnl9JhApZSfUuphpdQipdQOpdRhpdQ/eTzkp2GDxcXlsR6YEMUgeSVcJUR7zjpMovSTa5UwWnp6urtDEF7I0/LKqQahUioC+B34DOiDZemJmkCNfB7CQAEBAe4OQXghySthFJXjeU1ziFviEN5JrlXCaN60tqXZbOZ///sfDRs2JCgoCKUUNWrUsCszY8YMWrZsSUhICEoplLJctdesWeOwfGk0a9YslFJ07tzZ3aHkydPyytkuo28ALYBUYDqwGcui9FkGxyXyEBWVzwyIQhSR5JUwSr2gtXbPQ309a+ptUbrJtcpzdO7cmbVr1xZcMJuZM2cybNiwYp+7Ro0aue4m+/n5Ua5cORo3bszAgQN5+OGH8fPzK3A2yB9//JEvv/ySjRs3Eh8fj5+fH5UrV+bWW2/lscceo2nTpsWO1yo+Pp6PP/6Yn376icOHD5OSkkJkZCRNmjThnnvu4aGHHsq3K+K4ceN444038PHxoVGjRoSHh1OxYkXb/s8//5xHHnkEgPr161O+fHnDYvd2p06dYtq0aaxatYqDBw+SmJhIQEAAMTExNGvWjB49enDvvfdSrpxlUru88mrTpk3MmTOHtWvXcurUKS5dukRERAQNGzaka9euDB06lKpV85mR3EWcbRDejaXx10NrvdEF8YgCnDp1ivDwcHeHIbyM5JUwSsfo9QBkZWXh4+NDhn8rN0ckvIlcqzxHkyZNCjUrbFxcHCdOnACwfZk2Sp06dahQoQIAaWlp/PPPP/z666/8+uuvfPnllyxbtgyA4ODgXMeeP3+egQMHsmrVKgDKli1LgwYNyMjI4ODBg3z00Ud88sknPPXUU7zzzjvFviM0Z84cRo0aRUpKCkopateuTa1atTh58iQrVqxgxYoV/O9//+Pbb7+lefPmuY7XWvPxxx8DsHDhQu69995cZT766CMAJk2axPPPP1+seK8XWmsmTJjAa6+9ZusGWrlyZZo0aUJmZiYnTpzg22+/5dtvv+W5557jww8/5IEHHiAjI8Mur1JSUnjooYf45ptvAMvC9bVr1yY8PJxz586xbt061q5dy+uvv86UKVMYOXJkyb/Qwj6AK8A+Z47x1EfLli11aXTu3Dl3hyC8kOSVMELKjBn64qRJ+uKkSfrC22/b/m46f97doQkv4e5r1Z49e9x6fm9z6tQpHRMTowHdr18/w+qtXr26BvTMmTPttptMJv3+++9rQAN63LhxOiMjI9fxycnJumHDhhrQFStW1AsWLNCZmZl2+ydMmKADAgI0oB944IFixTt9+nRbTEOGDNFxcXF2+7ds2aJbt26tAV2mTBn9119/5arj7NmztjouX77s8DzBwcEacJjHv/76qwZ09erVi/VaSsLMmTM1oDt16lToY8aOHeswJwry+OOPa0D7+vrq5557Th89etRuf1ZWlv7zzz/1v/71Lx0cHKxHjRqltdZ2eXX58mXdokULDejy5cvrTz75RCcnJ9vVc+rUKT1x4kRdvnx5PXTo0ELH5+w1CdiqHbR7nP054+TVRqFwkytX5O0XxpO8EkazW4HJw9ZjEqWXXKu8h8lkYsCAAZw9e5Z69eoxY8YMl5/T19eXJ554goEDBwKWO2nawfXp6aefZs+ePURFRfHbb78xYMAAuy6AZcqU4eWXX2bBggWA5e7enDlzihTTgQMHeOKJJwB45plnmDNnDtWqVbMrc9NNN7FmzRpuueUWUlJSuO+++8jMzLQrk5aWZvu7ozue2cvktV/Y++qrr/jkk09QSvH111/zzjvv5JrpWClF8+bN+fDDD9m5cyc33XQTYL8O4bPPPsuff/5JVFQUmzZtYsSIEZQpU8aunooVKzJ69Gj+/vtvOnTo4PoXl4OzDcJvgIZKKVkEyE1SU1PdHYLwQpJXwijpZl/Szb5cyVSkm30x65zTzAhRdHKt8h6jR49m/fr1hIaG8u233+b6gmyVmprKhAkTuOmmmyhbtizBwcHUr1+fl19+mcTExCKd++abbwbgn3/+ybVe3JEjR/jiiy8AePvtt6ldu3ae9fTp04cHHngAgNdff52sLOen1Pjvf//LlStXuOGGG5g4cWKe5YKDg5k1axa+vr7s27eP+fPnA3D06NFck8FYJ4tRStkmYLFOHgNQs2ZN27Zx48YVKs6UlBRef/11mjVrRlhYGKGhoTRp0oRXX32VixcvOjzmxIkTTJ06le7du1OrVi2Cg4MpW7Ysbdq0YfLkyfnOxJmens4bb7xBvXr1CAoKomLFijz44IMcPXq0UPEWV1ZWlu29efTRR7nnnnsKPOaGG25g6NChwLV1COPi4vj8888BmDx5MnXq1Mm3jpiYGB5++OFiRF40zo4hfA3oCcxXSt2vtT7pgphEPmQNJuEKklfCKAv/aUL2uUabV9pDG/eFI7yMXKu8wzfffMO7774LwLRp02jUqJHDcocOHaJHjx4cPnwYPz8/qlevTmBgIAcPHmTixIksWLCAX3/91emZMS9fvgxASEhIrklaFi5ciNlsJjIyksGDBxdY15NPPsmcOXM4ePAgW7dupXXr1oWOw2Qy8fXXXwMwYsSIAmfRrVu3Lt27d+enn35i3rx5PPDAAwQFBdGuXTvS09PZunUrAO3atbMdExMTY3u+YcMGAFq1amV73TnvRjpy4sQJunbtyv79+/Hx8aFhw4b4+Piwe/dudu/ezdy5c1m5ciW1atWyO27KlCm88847BAcHU6lSJZo0acK5c+f4448/2LJlC4sWLWLVqlW5/g2uXLlCjx49bJMS1alTh7CwMObPn8+PP/7Iv/71rwJjLq4//viDgwcPAtju4DrD+poWLFiAyWQiKiqK++67z9AYjZRng1Ap9Woeu1YCo4ADSqlfgEPApbzq0Vq/VqwIhZ24uDjq16/v7jCEl5G8EkbRaFS2BuFJ3xQ3RiO8jadcq/4559ydTF8fRfXyoXbbTly4TIbp2h2nciEBlAu91mC4kmnmVFIazggJ8CO2bFCesdaKDnOqvqLYv38/Dz30EGD5on3//fc7LHflyhV69+7N4cOHGTRoEJMnTyYmJgaAc+fO8cgjj7B06VKGDBnC+vXrC31+rTU//PADAM2bNyc9Pd2uC6W1rnbt2hVqmZOWLVtSpkwZUlJS2LBhg1MNwh07dtjuet96662FOqZLly789NNPtsZdbGws69ev5+jRo9SsWdPuNVj17NkTwHaX8Ouvv3aqET148GD2799P48aNWbRoke0u15EjR7j33nvZvn07AwYMYMuWLXaT6/Ts2ZPevXvTrl07fH2vrUl74MABhg8fzoYNG5g8eTKvvPKK3flee+011q5dS2RkJEuWLKF9+/YAnD59mn79+uV7J9Uo1vewXLlyNGnSxOnjrXllradt27b4+/sbGqOR8rtDOI4cw0CyUYA/cE8BZTSWu4rCIEFBQQUXEsJJkldCCE/gKdeqW99xbrmFCmUC2fJ/Xe22PT53G7tPJtueP31bHZ69va7t+cGzqdz1QeEbQgC31a/A58NuyjPWo/+906n6nHXp0iX69u1LSkoKN998M5MnT86z7MyZM9m7dy/t27dnzpw5dg2N6OhovvrqK+rXr8+GDRvYuHEjbdu2zffcaWlpHDhwgLfeeotNmzbh6+vLK6+8kmt2UOuMp/l1Fc3Ox8eHWrVqsWPHDtuxhZW9fGHPd8MNNwCQnJxMSkpKnl1tjbJu3TrWrVuHUop58+bZdXmsWbMmX3/9NfXq1WPbtm389NNP9OrVy7b/tttuc1hn3bp1mT17NnXq1OGLL76waxCmpqby/vvvAzBx4kRbYxAs4+zmz59f6PeqOE6etHSCLOq6jNa8staT8+5paZNfg/AL8m7sCTeJiIhwdwjCC0leCZfRl90dgfAicq3ybI8++ih79uwhOjqar7/+Ot87Jtbp+R955BGHSzqEhoZy++23M3PmTNasWeOwQTh8+HCGDx+ea3vdunV5++23ue2223ItjZGSYunVEBZW+Lul1rLJyckFlLRnPZcz58teLjk52eUNwp9++gmArl270rhx41z7a9euzd13382iRYtyNQgBkpKSWLBgARs3buT06dOkpaXZTbiyf/9+0tLSbHdp169fT2pqKmXLlrWNz8yuatWq3HPPPSxcuNDIl5mL9d8mNDQ0zzKxsbGcPXs213atte2OqDUnnMknd8izQai1HlaCcYhCOnPmjHwgCsNJXgmjLG84hezTKozKiHBXKMILybXKc7333nvMmzcPX19f5s2bR5UqVfItv3PnTsAyEce0adMclrEuPp/Xnbns6xCeP3+eQ4cOYTKZiImJsU0sk5mZmWsGUXBuAiNrWWfXyMzemLM2ggp7rqKcryj2798P4LAxaNWkSRMWLVrEvn377LavWbOG/v37k5CQkOexWmsSExOpXLkygK2O2rVr5xpbaNWwYcM86+vcubNt7KEjef1IMHToUGbNmmV7bv23uXQpz1FxtGnThvPnzwOWcanbt2+37bPmVVHyyR2cnVRGuJn1wiaEkSSvhFGWJP5G9nlFLwcNdFsswvvItcozbdq0iRdeeAGwjA/LqythdklJScC1hmF+rJPE5DRmzBiGDRtme37s2DEGDx7Mb7/9xp133smmTZty3aWsUqUKf/31F4cPHy7wvGBp0Bw5csR2rNXPP//Mm2++mav8HXfcwZgxY3KVP3z4MC1atCjwfIcOHQIsjUFX3x2Ea3fKrOM3HYmNjbUrC5Y7Y9bGYPfu3XnppZdo0qQJERER+Pn5kZWVZbuLln0JDWvDKb//6/nF0qRJk1x3fcHyb3/8+HG7Hwmyq1u3rt1zawM1v1lNlyxZYvv77t277cYaWvOqSpUqbN++3ZYjpZU0CD1MamoqkZGR7g5DeBnJKyGEJ/CUa9Xq5zs5Vd7XJ/fyLJ8MaZlrUpns6sSEOX2ekIDcX/ucrcNZ586dY8CAAWRmZtKrV69cE4jkJSwsjKSkJDZt2mS7m1dc1apVY/HixTRo0IBt27YxefJknnnmGbs7hO3bt+eHH35gw4YNZGRkFDixzLZt22zdArN3Wz179qxt4pfsrGMAAZo2bUpYWBipqamsXr26UA3CNWvW5DqXK1kbnY66RlqdOXPGrixYupomJCTY3vOc43+td9ZysnatjI+Pz/N8+cViHX+Y07hx4xg/fnyuHwnyYh27eOHCBXbt2uX0xDJmsxk/Pz/at2/P999/z4YNG8jMzCy1E8s4tQ6hUqqaE4/KSinX/3RxncnrVzAhikPySgjhCTzlWlUrOsypR84ZRgGqlAuxK5N9hlGAIH9fp8+Tc4bRnLEazWw2c//993PixAlq1arFnDlz7NbDy4+1i+KuXbsMjal8+fK8+qplIv0JEybkWsuwf//++Pr6kpiYyJdffllgfe+99x5gaehZFyUHGDZsGFrrXI/s3RL9/Pzo168fAJ999hkZGRn5nuvgwYP88ssvAHnOzmq0evXqAZY7YHmx7ss+A7D1jlirVq0cTgb1+++/O6zLWsfhw4fzfD/27NlTiMiL56abbrI13j/44AOnj7euSTlgwAD8/PxISEiwrR1ZGjm7MP0RJx7HgCSlVIJSapFSquD+AaJAsgaTcAXJK2GUP1PvYVtqX9vjYqb8LiiMI9cqz/Lvf/+bVatWERQUxLfffuvU+M/+/fsDli/jBTWUnPXoo49SqVIlLl68yCeffGK3r1atWgwZMgSA0aNH59t1dPHixcyZMwewvFZHk98U5KWXXrKtrfjSSy/lWS4tLY1hw4ZhNpupW7duiTUI77jjDgBWrlzpsFH4zz//sHjxYgDuvPPaLLUhISHAtbuHOVnXocypffv2hIWFcfHiRebOnZtr/4kTJ/juu++ceg1F4ePjw9ixYwHLWpnOntM6/rFGjRq2MYvPPfecbW3DvMTHxzNjxowiRFw8zmauKsIjEugDLFdKTTAk6vwCVGqcUkoX8Hjc1XG4inUAtRBGkrwSRtmcOpjfUx+wPZIyXT/pgbh+yLXKc3z//fe29eI++ugjmjVr5tTxjz76KA0aNGDnzp3cddddub5Im81m1q9fzyOPPGKb2r+wAgMDGT16NGC5w3fx4kW7/e+99x7169cnISGBDh068PXXX9uNS0tJSWHixIkMHGgZIz1o0CCGDh3qVAxW9evXt91lnDJlCg8++CDHjh2zK/PHH3/QuXNnNm7cSGhoKPPnzy+xrocdO3akY8eOaK0ZNGiQ3b9DXFwcAwYMwGw207JlS9t6h9bjADZu3GjXwLl06RIjRoxg06ZNDs8XFhZmW3h+9OjRbNy40bbvzJkzJdYQBhgyZAiPPvooWmv69+/Pc88953As4NGjR3NNfJSenm77+5QpU2jWrBkJCQm0bduWTz/9NNckM/Hx8UyePJlGjRqxbt0617yg/Di6nZ3fA3gCuALMBToDEYDv1T87AXOu7n8SCAFaAh8B5quPHs6e08n4xmFZLuMssD6Px90F1dOyZUtdGsXFxbk7BOGFJK+EEVJmzNAfjliuPxixyvbY859x2pSQ4O7QhJdw97Vqz549bj2/J4mIiNCA9vf31+3atSvU44knnrCr48iRI7pRo0b66vc6XatWLX3zzTfrJk2a6ODgYNv2I0eO2B1XvXp1DeiZM2fmGd/ly5d1bGysBvRrr72Wa/+5c+d0586dbecoW7asbtGihW7SpIkODAzUgFZK6SeeeEKbTKZiv18zZ87UoaGhtnrr1Kmjb7rpJl2pUiVbDNWrV9dbt251ePyRI0ds5fKS1/ultda//vqr7Rw5HT9+XNetW1cD2sfHRzdp0kQ3bdpU+/r6akDXrFlTHz58ONdxgwYNsp2zSpUqulWrVjo0NFQrpfTMmTPzjOfy5cu6Q4cOtv316tXTzZs31/7+/joyMlL/+9//1oDu1KlTfm+pnbFjxxaYE45kZWXp1157TQcEBNjiqVy5sm7ZsqVu3bq1rl69ulZKaUCHhobqsWPHaq21vnLlil09Fy9e1H369LHV4e/vrxs0aKBbt26ta9WqZasjKChIf/rpp4WOz9lrErBVO2j3ODWpjFLqLmAqMFpr/U6O3UnAWmCtUupPYAoQp7VeCmxTSsUBE4DHgV+cOW8R/ay9cOmM0r6OifBMklfCKBr78UFXMLspEuGN5FrlOayzhGZmZjqcXMWR7JO7gKW73datW5kxYwZff/01O3fu5Pjx40RHR9OkSRM6dOjAPffcU6SuxMHBwbzwwgu88MILvPvuuzz99NN2yzhERUXx66+/8v333/Pll1+yadMm9uzZg5+fHzVq1KBLly6MGDHC6TufeRk2bBg9e/bko48+4ueff+bw4cMcPXqUyMhIunbtSp8+fXj44YcdjsdztSpVqrB161beffddvv32Ww4dOoTWmvr169O3b1+ee+45h92BZ8+eTaNGjZg1axZHjx4lLS2NDh068OKLL3Lrrbc6XP4BLP82y5cv53//+x9z5szhyJEjREZGMnDgQF5//XXbxDolQSnFf/7zH4YPH8706dNZuXIlBw8eZOfOnQQGBlKhQgXuueceunfvzoABA2zvg3UGVavw8HC+++47Nm7cyBdffMG6des4efIkly9fJiIigo4dO9KtWzeGDRtGpUqVSuz12V6nzrY4ZIGFlVoL1NVaVyygnAJOA/u11p2ubgsAzgOpBR1fHEqpccBYYHZxGoStWrXSW7duNSosw+zbt89u0K4QRpC8EkZInTmTmZur4pNtNEJMpZ+4Z9Qr+JYv78bIhLdw97Vq7969NGjQwG3nF8bLvii6EEYpqbxy9pqklNqmtW6Vc7uzYwibAgV24L96S/Lo1fLWbRnAfixjCkURWdd6EcJIkldCCE8g1yphtNK6DIDwbJ6WV0WZVKamKmDOYKWUD1DravnsgoBLTp6zqJoqpb5SSq1WSi1RSr2ulGpUQud2GWsXDCGMJHklhPAEcq0SRjObpVu7MJ6n5ZWzDcLtQBTwfwWUe+VquT+tG642ImthmeylJDQD7ge6AL2BfwO7lFLvKqV88zuwNLty5Yq7QxBeSPJKiGv69OmDUoqoqKgiHb97925GjhxJgwYNKFOmDIGBgVSuXJlevXrx2WefcemS/e+ia9asQSll9wgKCqJOnTo89dRTuRZoVkpRo0aNPM9vra8wiy97GrlWCaNZ14sTwkielldOTSoDvA10BMYrpVoCM4AdQApQBrgReAi4G8ssOm9nO/Y2LHcICzeyuOjOXD3vIuDw1djqAv/CMqHNM0AmMNrFcbiErMEkXEHySgiLefPm8f333xd54obXXnuNcePGoZSiY8eOdO/enZCQEM6cOcO6dev48ccfeeuttzh69GiuY2+55Ra6desGQEJCAsuXL+f9999nyZIlbNu2rcgNVG8i1yphNOt6cUIYydPyyqkGodb6J6XUs8AkLI2+3g6KKSzLS7ygtf452/ZY4EPgyyLGWtgYP3GweRcwUil1BJgIPKuU+khrfTR7IaXUY8BjYJlRad++fVSqVImEhAQyMjKoXr06cXFxhIeH4+fnR2JiIpUrV+bs2bNkZWVRpUoVjh07ZpthKCkpiWrVqnHixAl8fHyIiYnh5MmTREZGYjKZSE5OttUZEBBAVFQUp06dIioqiitXrpCammrbHxQUREREBLt376Zhw4akpqZy+fJl2/6QkBDCwsKIj48nNjaWpKQkrly5YtsfFhZGUFAQCQkJpe41nTlzhgoVKshrcuNrSklJITAw0Ktekzf+O5X21xSQx+LR//zzD2XN5lL/mvbs2cOoUaN4/PHHWbx4MWlpaZw5c6bQ/06vv/46EyZMoG7durzzzjvcfPPNuV7Tn3/+yZQpU9i3b5/tNVnXHKtfvz4PPfSQ7TWNHTuWe+65hw0bNjB58mQefPBB2yybmZmZJCcnO3xNFy5csJU5dOiQV+VeRkYGISEhbntNWmvS0tLw8fHB19eXzMxM/P39MZvNZGVlERgYSHp6Or6+viilMJlMBAQEYDKZ8t2fmZkJWMYdZWRk2GbbzG+/1hqz2Wyr08fHBz8/v3z35xfz9fqaMjMz8fHx8arX5I3/Tp72msxmM0FBQS5/TZmZmVy+fLnQ1728ODXLqO0gpZoCzwPdgArZdsUDy4DJWusdTlfsYle7ih4DKgFPa63fy6tsaZ1l9MSJE1SpUsXdYQgvI3kljODps4z279+fP/74g7///ptGjRqRmppKQkJCoY49f/481atXJysri927d1OrVq08y5pMJrvp9desWUOXLl14/vnnmTRpkl3ZhQsXMnDgQO644w5+/PFHwNJltHr16g7vMmavb+jQocyaNcu2fcuWLbz55pts3bqVhIQEypUrR7169Xj88cdLdLHn4nD3tUpmGfU+GRkZ+X5RFqIoSiqvjJpl1NkuowBcbew9eLXiskAYluUkLhalvpKitTYrpTYD9wB13B1PUbhj/Rnh/SSvhKton1B3h1Ao3377Ld988w2//PILoaHOx/zNN99w6dIlhg4dmm9jEHKvtZYf64+2BczlVqBt27bRvn17wsLC6NOnD7GxscTHx7Nt2zYWLVrkMQ1CuVYJoxX3/5YQjnhaXhWpQZjd1UZgqW4I5mDt01Ts1+4OCQkJMo5EGE7ySriMKv1f4M+fP8+oUaMYMmQI3bt3L1IdmzZtAqBTp06GxWU2m5k+fToAN910U7Hq+vLLL8nMzOTXX3+ladOmdvvOnz9frLpLklyrhNFMJpPHLREgSj9PyyuPbBQVU+Orf55waxRFVKlSJXeHILyQ5JUwyqYa35F9IMJA/3C3xVJYTz31FFlZWbz77rtFruPsWcsE2o7+Ly1fvpyNGzfabRs0aBB169a127Zx40bGjRsHQGJiIsuXL2f//v1Ur16dJ554osixZefo7md5D+jOa1UarlVaa4/79V/kTbqLClcoibwqyrC/vDjVIFRKversCbTWrzl7jKsope4ErGsRLndnLEWVkJBAeHjp/4IlPIvklTDK37G/kaWufUgNSb7VjdEU7Pvvv+err77iyy+/dNmdp+XLl/POO+/YbWvVqlWuBuGmTZtsdxoDAwOpVq0aTz/9NP/3f/9X7EZb//79mTp1Km3atGHQoEF07dqVDh06EBkZWax6S5q7r1W+vr6YzWanuv2K0s1kMuHr67GrkYlSqiTyymw2G3YOZ69o44DCNkfV1bIl1iC8uvD8U8BH2Se1UUr5AAMB6wykP2it/yipuIyUkccsfkIUh+SVuB5dunSJxx9/nDvuuINBgwYVq66YmBgATp06lWvfpEmTbJPFjBs3jvHjxzusw9GkMo4opfJd48q6z8fn2uQ+t9xyCytXruTNN9/k008/5YMPPsDHx4du3boxZcoU6tWrV+B5SwN3X6tCQkJITU21zWwqPJ+nrRcnPENJ5FVqaiohISGG1OVsg/AL8m4QhgI3AE2xrPP3zdU/S5I/lmUjHlNKJQJxgOlqXOWulvkNeKCE4zKMrMEkXEHySlyPzp07x6lTpzh16lSeXQCVUpQtW5akpKR867rllluYPXs269atY/jw4S6I9prsS0s4Yh0TWLZsWbvtXbp0oUuXLqSmprJ+/Xq+/vprZs6cyZ133smePXs8ouucu69V4eHhJCQkUKZMGbmr5CU8bb044RlcnVdms5nExETDerY4uw7hsILKKKVaA7OxLEfRs2hhFdlR4N/ALUADLA3BICAR+Bn4CpintTaXcFyGiYuLo379+u4OQ3gZySthlMpJddHZ2lbmrNLbyChTpgwPP/yww30LFiwgMzOTIUOGFOoX2H79+vH888+zcOFCxo4dS40aNQyO9pomTZqwfv162/IYOW3evNlWzpGwsDB69OhBjx49uHTpEgsWLGDv3r25Jpspjdx9rSpTpgxpaWnExcURGRlJWFiYbb0w4ZnS09MJDg52dxjCy7gir6xrIaamppKYmEhoaChlypQxpG7DO8FrrbcopfoCu4HRwASjz5HPuZOAN0vqfO4g47yEK0heCaP03Pe43TqEGVVWujGa/JUvX942i2dOK1euJDU1Nc/9jup64403ePbZZ7nzzjv55ptvHK4NdfFi8SflHjJkCOvXr+fFF19k4cKFtsXqAbZv3860adMIDQ2l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",
      "text/plain": [
       "<Figure size 936x374.4 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "time_interval = 30\n",
    "times = 5\n",
    "diff = 0.001\n",
    "\n",
    "x_axis = []\n",
    "for i in range(times):\n",
    "    x_axis+=[i*time_interval,(i+1)*time_interval-diff]\n",
    "\n",
    "\n",
    "# Plt configuration.\n",
    "pd.set_option('display.max_colwidth', 1000)\n",
    "pd.set_option('display.max_columns', 100)\n",
    "matplotlib.rcParams.update({\"font.size\": 23,'lines.linewidth': 4.3})\n",
    "plt.figure(figsize=(13,5.2))\n",
    "\n",
    "style=[ '--','-.',(0,(3, 1, 1, 1,1)), (0,(3, 1, 1, 1)), '.',]\n",
    "colors=['#ff7f0e','#2ca02c', '#9467bd','#1f77b4',  '#8c564b',]\n",
    "\n",
    "i=0\n",
    "for exec_plan in exec_res_perf:\n",
    "    if exec_plan == \"Morphling\":\n",
    "        plt.plot(x_axis, [16/x if x!=0 else 0 for x in exec_res_perf[exec_plan] for _ in range(2)],label=exec_plan,c='lightcoral',lw=6,alpha=0.9)\n",
    "    else:\n",
    "        plt.plot(x_axis, [16/x if x!=0 else 0 for x in exec_res_perf[exec_plan] for _ in range(2)],linestyle=style[i],label=exec_plan,c=colors[i])\n",
    "        i+=1\n",
    "\n",
    "plt.legend(loc=\"upper right\",ncol=1,handlelength=2)\n",
    "plt.xticks([i*30 for i in range(0, times+1)])\n",
    "plt.ylim([0,15.6])\n",
    "plt.xlabel(\"Time (min)\")\n",
    "plt.ylabel(\"Throughput (ex/sec)\")\n",
    "\n",
    "morphling_perf = [16/x if x!=0 else 0 for x in exec_res_perf[\"Morphling\"]]\n",
    "for i in range(0,times):\n",
    "    plt.annotate(\"\", xy=(i*time_interval, morphling_perf[i]+0.7), xytext=((i+1)*time_interval+0.5, morphling_perf[i]+0.7),arrowprops=dict(arrowstyle=\"<->\",linewidth=2,alpha=0.8))\n",
    "plt.text(105,1.5,\"1 GPUs\",fontsize=19,horizontalalignment=\"center\")\n",
    "plt.text(75,4.3,\"4 GPUs\",fontsize=19,horizontalalignment=\"center\")\n",
    "plt.text(15,14.6,\"4 * 8-GPUs\",fontsize=17,horizontalalignment=\"center\")\n",
    "plt.text(45,10.1,\"4 * 4-GPUs\",fontsize=17,horizontalalignment=\"center\")\n",
    "plt.text(135,1.7,\"2x more\\nCPUs\",fontsize=19,horizontalalignment=\"center\")\n",
    "plt.grid(linestyle = 'dashed', linewidth = 0.5)\n",
    "plt.tight_layout()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "base",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
